package com.zhang.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zhang.entity.User;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zhang.vo.UserVO;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;


/**
 * <p>
 * 用户表 服务类
 * </p>
 *
 * @author Zhang
 * @since 2022-03-02
 */
public interface UserService extends IService<User> {
    /**
     * 功能描述: <br>
     * 〈分页查询〉
     * Constants.WRAPPER 表示wrapper对象
     *
     * @Param: [page 分页对象, queryWrapper 查询条件]
     * @Return: com.baomidou.mybatisplus.extension.plugins.pagination.Page<com.zhang.entity.User>
     * @Author: Mr.zhang
     * @Date: 2022/3/2 15:43
     */
    Page<UserVO> findUserPage(Page<UserVO> page, UserVO userVO);

    /**
     * 功能描述: <br>
     * 〈修改状态，是禁用变成开发，是开发变成禁用〉
     * @Param: [id]
     * @Return: boolean
     * @Author: Mr.zhang
     * @Date: 2022/3/6 2:50
     */
    boolean modifyStatus(Long id);

    /**
     * 功能描述: <br>
     * 〈导出用户信息〉
     * @Param: [response, tbUsers]
     * @Return: void
     * @Author: Mr.zhang
     * @Date: 2022/3/8 12:03
     */
    void exportUserExcel(HttpServletResponse response, List<User> users) throws IOException;

    /**
     * 功能描述: <br>
     * 〈实现用户名密码的登录〉
     * @Param: [username, password]
     * @Return: java.lang.String
     * @Author: Mr.Nie
     * @Date: 2022/3/14 14:12
     */
    String login(String username, String password);

    /**
     * 功能描述: <br>
     * 〈 根据用户查询用户信息 〉
     * @Param: [username]
     * @Return: com.zhang.entity.User
     * @Author: Mr.Zhang
     * @Date: 2022/3/17 8:55
     */
    User loadUserByUsername(String username);
}

